//////////////////////////////////////////////////////////////////////////
//
// GAM203
// Camera class
// Camera.h
// 
// Scott Taylor
// Qantm College
//
//////////////////////////////////////////////////////////////////////////

#ifndef FREECAMERA_H
#define FREECAMERA_H

#include "ABCamera.h"

class FreeCamera : public ABCamera
{
public:
	FreeCamera();
	virtual ~FreeCamera();
	//////////////////////////////////////////////////////////////////////////
	// Update the camera. If it is attached or tracked, it will make movements
	//
	// Paramaters:
	// a_dt, the delta time
	//
	// Returns void
	//
	//////////////////////////////////////////////////////////////////////////
	virtual void Update(float a_dt);

	//////////////////////////////////////////////////////////////////////////
	// Get the view matrix of the camera
	//
	// Paramaters:
	// a_outViewMat, an out matrix that the view matrix is set to
	//
	// Returns void
	//
	//////////////////////////////////////////////////////////////////////////
	virtual void GetViewMatrix(D3DXMATRIX& a_outViewMat);

	const D3DXVECTOR3 GetLookVec() const { return m_look; }
	const D3DXVECTOR3 GetRightVec() const { return m_right; }

private:
	D3DXVECTOR3 m_up, m_look, m_right;
};

#endif  //FREECAMERA_H
